草庐IT

c++ - ofstream 指针的 vector

全部标签

c - MPI基础类(class)

您好,我想学习在C中使用MPI。我在Windows7上使用Codeblocks我运行了这个程序:#include#includevoidmain(intargc,char*argv[]){interr;err=MPI_Init(&argc,&argv);printf("Helloworld!\n");err=MPI_Finalize();}但出于某种原因,我在“mpi.h”处遇到错误。有没有办法添加库? 最佳答案 首先,安装MPI的实现。过去我使用过MPICH,但还有其他可用的实现。我知道另一个是LAM/MPI。查看维基百科页面以获

c# - 在 C# 中编码一个 char**

我正在与采用char**(即指向字符串的指针)的代码进行交互:intDoSomething(Whatever*handle,char**error);基本上,它需要一个状态句柄,如果出现问题,它会返回错误代码和可选的错误消息(内存是在外部分配的,并通过第二个函数释放。那部分我已经弄明白了:)).但是,我不确定如何在C#中处理in。我目前拥有的:[DllImport("mydll.dll",CallingConvention=CallingConvention.Cdecl)]privatestaticunsafeexternintDoSomething(IntPtrhandle,byte

c# - C# 中的 C 位域

我需要将C结构转换为使用位字段的C#。typedefstructfoo{unsignedintbar1:1;unsignedintbar2:2;unsignedintbar3:3;unsignedintbar4:4;unsignedintbar5:5;unsignedintbar6:6;unsignedintbar7:7;...unsignedintbar32:32;}foo;有人知道怎么做吗? 最佳答案 如thisanswer中所述和thisMSDNarticle,您可能正在寻找以下内容而不是BitField[Flags]enum

c# - 将指针数组转换为 IntPtr 数组

我被困在一个看似微不足道的任务上,需要你的帮助。我需要编写一个具有以下签名的方法:System.ArrayToIntPtrArray(System.Arraya)其中实际参数可以是任何pointertype的数组(例如int*[]、long**[]、void*[,])并返回具有相同形状的元素数组类型System.IntPtr具有与输入数组的元素相同的数值。问题是如果我事先不知道指针的类型,我不明白如何提取指针的数值。例如,如果我事先知道我的参数始终是void*[]类型,我可以按如下方式编写方法:unsafeIntPtr[]ToIntPtrArray(void*[]a){varresul

c# - 来自 C 背景,在 C# 中实现 const 引用数据表/结构的好方法是什么?

我将给出一个我熟悉的使用C实现的简单示例。我认为重点在于如何使用数据,而不是我在示例中使用它所做的事情:)typedefstruct{constchar*description;uint32_tcolour_id;uint32_tquantity;}my_data_t;constmy_data_tref_data[]={{"BrownBear",0x88,10},{"BlueHorse",0x666,42},{"PurpleCat",123456,50},};voidshow_animals(void){my_data_t*ptr;ptr=&ref_data[2];console_wr

c# - 结构指针(地址)和默认构造函数

获取C#结构的地址会导致默认构造函数调用吗?例如,我得到了这样的结构:[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructHEADER{publicbyteOPCODE;publicbyteLENGTH;}[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructS{publicHEADERHeader;publicintValue;}那么,当然,我不能这样做:Ss;//noconstructorcall,so...varv=s.Value;//compilererror:

c# - 为什么 SortedList<TKey, TValue> 不对值使用指针?

所以我正在查看SortedList的实现和执行Add(调用Insert如下所示)真的让我感到惊讶。Add方法进行明显的二进制搜索以确定KVP应该去的索引,但是Insert似乎它可以显着改进(当然是在更大的范围内):privatevoidInsert(intindex,TKeykey,TValuevalue){if(this._size==this.keys.Length)this.EnsureCapacity(this._size+1);if(index如果我没看错,我保留随时犯错的权利,这是一个O(2n)操作。在我看来,值应该用指针来实现。有点像LinkedList与key的值有关,

c# - 如何通过引用修改该字符串的非托管 C 库来发送字符串?

我是与非托管库交互的新手。我有一个非托管C函数,它通过函数内的引用修改字符串。我在从C#传递字符串并通过C函数修改它时遇到问题。这是C函数:__declspec(dllexport)void__stdcallTest(char*name){*name="Bar";}这是C#DLL导入代码:[DllImport(@"C:/blah/mylibrary.dll")]publicexternstaticstringTest(stringname);这是我用来调用函数的代码:strings="foo";Test(s);//Iwantstobe"Bar"aftertheaboveline我曾尝试

c# - 如何制作从 C# "Thread-safe"调用的 C (P/invoke) 代码

我有一些使用单个全局变量的简单C代码。显然这不是线程安全的,所以当我在C#中使用P/invoke从多个线程调用它时,事情就搞砸了。如何为每个线程单独导入此函数,或使其成为线程安全的?我尝试声明变量__declspec(thread),但这导致程序崩溃。我还尝试制作一个C++/CLI类,但它不允许成员函数是__declspec(naked),我需要(我正在使用内联汇编)。我在编写多线程C++代码方面经验不足,因此可能缺少某些内容。下面是一些示例代码:C#[DllImport("MyDll.dll",CallingConvention=CallingConvention.Cdecl)]pu

c# - 随机整数中最可能的位

我做过这样的实验——用C和C#制作了1000万个随机数。然后统计随机整数中15位中的每一位被设置了多少次。(我选择15位是因为C只支持最大0x7fff的随机整数)。我得到的是:我有两个问题:为什么有3个最可能的位?在C情况下,位8,10,12是最有可能的。和C#位6,8,11最有可能。与C#最可能位相比,C#最可能位也似乎大部分移动了2个位置。为什么是这样?因为C#使用其他RAND_MAX常量还是什么?我的C测试代码:voidaccumulateResults(intrandom,intbitSet[15]){inti;intisBitSet;for(i=0;iC#的测试代码:stat